package net.codjo.broadcast.gui.selector;
import net.codjo.broadcast.gui.GuiPreference;
import net.codjo.broadcast.gui.GuiPreferencesManager;
import net.codjo.mad.client.request.RequestException;
import net.codjo.mad.gui.request.DetailDataSource;
import net.codjo.mad.gui.request.GuiLogic;
import net.codjo.mad.gui.request.util.ButtonPanelLogic;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JComboBox;
/**
*
*/
public class BroadcastSelectorLogic implements GuiLogic<BroadcastSelectorDetailWindow> {
private BroadcastSelectorDetailWindow gui;
private ButtonPanelLogic buttonPanelLogic;
private Map<String, String> selectorPreferences;
public BroadcastSelectorLogic(DetailDataSource dataSource) throws RequestException {
gui = new BroadcastSelectorDetailWindow();
buttonPanelLogic = new ButtonPanelLogic(gui.getButtonPanelGui());
fillSelectorPreferences();
fillFamilyCombobox();
initDatasource(dataSource);
dataSource.getSaveFactory().setExcludedFieldList(new String[]{"selectorId"});
if (dataSource.getLoadFactory() != null) {
dataSource.load();
gui.switchToUpdateMode();
}
}
private void initDatasource(DetailDataSource dataSource) {
dataSource.declare("selectorId");
dataSource.declare("selectorName", gui.getSelectorName());
dataSource.declare("selectorQuery", gui.getSelectorQuery());
dataSource.declare("selectorFamily", gui.getSelectorFamily());
buttonPanelLogic.setMainDataSource(dataSource);
}
private void fillFamilyCombobox() {
final JComboBox familyCombo = gui.getSelectorFamily();
familyCombo.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent evt) {
if (evt.getStateChange() == ItemEvent.SELECTED) {
setFamilySelectorDescription((String)familyCombo.getSelectedItem());
}
}
});
Set<String> familySet = selectorPreferences.keySet();
String[] selectorFamilies = familySet.toArray(new String[familySet.size()]);
familyCombo.setModel(new DefaultComboBoxModel(selectorFamilies));
setFamilySelectorDescription((String)familyCombo.getItemAt(0));
}
private void setFamilySelectorDescription(String family) {
gui.getSelectorColumns().setText(selectorPreferences.get(family));
}
private void fillSelectorPreferences() {
GuiPreferencesManager preferencesManager = GuiPreferencesManager.getGuiPreferencesManager();
String[] families = preferencesManager.getFamilies();
selectorPreferences = new HashMap<String, String>();
for (String family : families) {
GuiPreference preference = preferencesManager.getPreferenceFor(family);
if (preference instanceof AbstractSelectorGuiPreference) {
AbstractSelectorGuiPreference selectorPreference = (AbstractSelectorGuiPreference)preference;
selectorPreferences.put(family, selectorPreference.getSelectorColumnsDescription());
}
}
if (selectorPreferences.isEmpty()) {
throw new IllegalStateException("Aucune pr�f�rence selector d�finie");
}
}
public BroadcastSelectorDetailWindow getGui() throws Exception {
return gui;
}
}